/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package entidades;

import java.io.Serializable;
import java.sql.Date;
import java.util.List;
import java.util.Objects;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.JoinTable;
import javax.persistence.ManyToMany;
import javax.persistence.OneToOne;

@Entity
public class HistoriaClinica implements Serializable {
    private static final long serialVersionUID = 1L;
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private Long id_Historia_Clinica;
    @Column(nullable = false)
    private Boolean bloqueado;
    @Column(nullable = false)
    private String descripcion;
    @Column(nullable = false)
    private Date fechaUltimoAcceso;
    @Column(nullable = false)
    private String DNIUltimoAcceso;
    
    @OneToOne(mappedBy = "hClinica")
    private Paciente paciente;
        
    @ManyToMany()
    @JoinTable(name = "Tabla_historia_tratamiento",
      joinColumns= @JoinColumn(name = "historiaClinicaT_fk",nullable=false),
      inverseJoinColumns= @JoinColumn(name = "tratamiento_fk",nullable=false))
    private List<Tratamiento> tratamiento;
    
    @ManyToMany    
    @JoinTable(name = "Tabla_historia_enfermedad",
      joinColumns= @JoinColumn(name = "historiaClinicaE_fk"),
      inverseJoinColumns= @JoinColumn(name = "enfermedad_fk"))
    private List<Enfermedad> enfermedad;
        
    @ManyToMany
    @JoinTable(name = "Tabla_historia_medico",
      joinColumns= @JoinColumn(name = "historiaClinicaM_fk",nullable=false),
      inverseJoinColumns= @JoinColumn(name = "medico_fk"))
    private List<Medico> medico;
    
    public Long getId() {
        return id_Historia_Clinica;
    }

    public void setId(Long id) {
        this.id_Historia_Clinica = id;
    }

    public Boolean getBloqueado() {
        return bloqueado;
    }

    public void setBloqueado(Boolean bloqueado) {
        this.bloqueado = bloqueado;
    }

    public String getDescripcion() {
        return descripcion;
    }

    public void setDescripcion(String descripcion) {
        this.descripcion = descripcion;
    }

    public Date getFechaUltimoAcceso() {
        return fechaUltimoAcceso;
    }

    public void setFechaUltimoAcceso(Date fechaUltimoAcceso) {
        this.fechaUltimoAcceso = fechaUltimoAcceso;
    }

    public String getDNIUltimoAcceso() {
        return DNIUltimoAcceso;
    }

    public void setDNIUltimoAcceso(String DNIUltimoAcceso) {
        this.DNIUltimoAcceso = DNIUltimoAcceso;
    }

    @Override
    public int hashCode() {
        int hash = 5;
        hash = 97 * hash + Objects.hashCode(this.id_Historia_Clinica);
        return hash;
    }

    @Override
    public boolean equals(Object obj) {
        if (obj == null) {
            return false;
        }
        if (getClass() != obj.getClass()) {
            return false;
        }
        final HistoriaClinica other = (HistoriaClinica) obj;
        if (!Objects.equals(this.id_Historia_Clinica, other.id_Historia_Clinica)) {
            return false;
        }
        return true;
    }
    



    @Override
    public String toString() {
        return "HistoriaClinica{" + "id=" + id_Historia_Clinica + ", bloqueado=" + bloqueado + ", descripcion=" + descripcion + ", fechaUltimoAcceso=" + fechaUltimoAcceso + ", DNIUltimoAcceso=" + DNIUltimoAcceso + '}';
    }
    
}
